package csvm_v1.products;

/**
 * Product adalah kelas abstrak bagi produk yang disediakan oleh vending machine
 *
 * @author Muhammad Anis
 */
public abstract class Product {

    /**
     * harga produk
     */
    private int price;
    /**
     * indeks seleksi pada product selector
     */
    private int selectIndex;

    /**
     * konstruktor dari Product
     *
     * @param price harga produk
     * @param selectIndex indeks seleksi produk
     */
    public Product(int price, int selectIndex) {
        this.price = price;
        this.selectIndex = selectIndex;
    }

    /**
     * mengembalikan indeks seleksi produk
     *
     * @return indeks seleksi produk
     */
    public Integer getSelectIndex() {
        return selectIndex;
    }

    /**
     * mengembalikan harga produk
     *
     * @return harga produk
     */
    public Integer getPrice() {
        return price;
    }

    /**
     * mengembalikan nama dari produk
     *
     * @return nama produk
     */
    public abstract String getProductName();

    @Override
    public String toString() {
        return getProductName();
    }

    @Override
    public boolean equals(Object o) {
        return this.getProductName().equals(((Product) o).getProductName());
    }
}
